# Archlive <http://archlive-pkg.googlecode.com>

_kernver=`uname -r`

pkgname=(nvidia nvidia-build nvidia-utils)
pkgver=260.19.36
pkgrel=${_kernver/-/_}
arch=('i686' 'x86_64')
url="http://www.nvidia.com/"
makedepends=('kernel26-headers')
license=('custom')
if [ "$CARCH" = "i686" ]; then
	_arch='x86'
	_pkg="NVIDIA-Linux-${_arch}-${pkgver}"
        source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
        md5sums=('2826484d87827351774449382e45c4a9')
elif [ "$CARCH" = "x86_64" ]; then
	_arch='x86_64'
	_pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32"
        source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
        md5sums=('6ebc5db9066e920b0b0e48377ce5eeb5')
fi
source[1]='20-nvidia.conf'
md5sums[1]='541cb36684b6764ccba73d7afe268bf5'

build () {
	cd ${srcdir}
	[ -d ${_pkg} ] && rm -rf ${_pkg}
	sh ${_pkg}.run --extract-only
	cd ${_pkg}/kernel
 	make SYSSRC=/lib/modules/${_kernver}/build module
}

package_nvidia () {
	pkgdesc="NVIDIA drivers for kernel26."
	depends=('kernel26' "nvidia-utils=${pkgver}")
	conflicts=('nvidia-96xx' 'nvidia-173xx')
	install=nvidia.install

	install -D -m644 $srcdir/${_pkg}/kernel/nvidia.ko \
		$pkgdir/lib/modules/${_kernver}/video/nvidia.ko
	gzip -9 $pkgdir/lib/modules/${_kernver}/video/nvidia.ko
        install -d -m755 $pkgdir/etc/modprobe.d
        echo "blacklist nouveau" >> $pkgdir/etc/modprobe.d/nouveau_blacklist.conf
	sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/nvidia.install
}

package_nvidia-build () {
	pkgdesc="Sources and autobuild system of NVIDIA drivers."
	provides=("nvidia-daemon=${pkgver}" "nvidia-hook=${pkgver}" "nvidia-generator=${pkgver}")
	install=nvidia-build.install

	cd ${_pkg}/kernel
	make clean
	install -m755 -d "${pkgdir}/usr/share/nvidia/build_mod/src" || return 1
	install -m644 * "${pkgdir}/usr/share/nvidia/build_mod/src" || return 1

	install -Dm755 "${startdir}/nvidia_build_module" "${pkgdir}/usr/bin/nvidia_build_module" || return 1
	sed -i -e "s/nvidia_ver=.*/nvidia_ver=${pkgver}/" "${pkgdir}/usr/bin/nvidia_build_module"

	install -m644 "${startdir}/nvidia-PKGBUILD" "${pkgdir}/usr/share/nvidia/build_mod/PKGBUILD" || return 1
	sed -i -e "s/pkgver=.*/pkgver=${pkgver}/" "${pkgdir}/usr/share/nvidia/build_mod/PKGBUILD" || return 1
	sed -i -e "s/pkgrel=.*/pkgrel=${pkgrel}/" "${pkgdir}/usr/share/nvidia/build_mod/PKGBUILD" || return 1
	install -m644 "${startdir}/nvidia.install" "${pkgdir}/usr/share/nvidia/build_mod/nvidia.install" || return 1

	# hook fglrx
	install -m755 -d "${pkgdir}/lib/initcpio/install" || return 1
	install -m644 "${startdir}/hook-nvidia" "${pkgdir}/lib/initcpio/install/nvidia" || return 1

	# fglrx daemon
	install -m755 -d "${pkgdir}/etc/rc.d" || return 1
	install -m755 "${startdir}/autonvidia.sh" "${pkgdir}/etc/rc.d/autonvidia" || return 1

	sed -i -e "s/nvidia_ver=.*/nvidia_ver=${pkgver}/" ${startdir}/*.install
}

package_nvidia-utils () {
	pkgdesc="NVIDIA drivers utilities and libraries."
	depends=('xorg-server' 'libxvmc')
	optdepends=('gtk2: nvidia-settings' 'pkg-config: nvidia-xconfig')
	conflicts=('libgl')
	provides=('libgl' 'libcl')
	install=nvidia-utils.install
	options=('!strip')
	backup=('etc/X11/xorg.conf.d/20-nvidia.conf')

	cd $srcdir/${_pkg}

	# X driver
	install -D -m755 nvidia_drv.so $pkgdir/usr/lib/xorg/modules/drivers/nvidia_drv.so
	# GLX extension module for X
	install -D -m755 libglx.so.$pkgver $pkgdir/usr/lib/xorg/modules/extensions/libglx.so.$pkgver
	ln -s libglx.so.$pkgver $pkgdir/usr/lib/xorg/modules/extensions/libglx.so	# X doesn't find glx otherwise
	# OpenGL library
	install -D -m755 libGL.so.$pkgver $pkgdir/usr/lib/libGL.so.$pkgver
	# OpenGL core library
	install -D -m755 libnvidia-glcore.so.$pkgver $pkgdir/usr/lib/libnvidia-glcore.so.$pkgver
	# XvMC
	install -D -m644 libXvMCNVIDIA.a $pkgdir/usr/lib/libXvMCNVIDIA.a
	install -D -m755 libXvMCNVIDIA.so.$pkgver $pkgdir/usr/lib/libXvMCNVIDIA.so.$pkgver
	# VDPAU
	install -D -m755 libvdpau_nvidia.so.$pkgver $pkgdir/usr/lib/vdpau/libvdpau_nvidia.so.$pkgver
	# CUDA
	install -D -m755 libcuda.so.$pkgver $pkgdir/usr/lib/libcuda.so.$pkgver
        install -D -m755 libnvcuvid.so.$pkgver $pkgdir/usr/lib/libnvcuvid.so.$pkgver
	# nvidia-tls library
	install -D -m755 tls/libnvidia-tls.so.$pkgver $pkgdir/usr/lib/libnvidia-tls.so.$pkgver
	# OpenCL
	install -D -m755 libnvidia-compiler.so.$pkgver $pkgdir/usr/lib/libnvidia-compiler.so.$pkgver
	install -D -m755 libOpenCL.so.1.0.0 $pkgdir/usr/lib/libOpenCL.so.1.0.0
	install -D -m644 nvidia.icd $pkgdir/etc/OpenCL/vendors/nvidia.icd

	install -D -m755 libnvidia-cfg.so.$pkgver $pkgdir/usr/lib/libnvidia-cfg.so.$pkgver

	# create soname links
	for _lib in $(find $pkgdir -name '*.so*'); do
		_soname="$(dirname ${_lib})/$(readelf -d "$_lib" | sed -nr 's/.*Library soname: \[(.*)\].*/\1/p')"
		if [ ! -e "${_soname}" ]; then
			ln -s "$(basename ${_lib})" "${_soname}"
			ln -s "$(basename ${_soname})" "${_soname/.[0-9]*/}"
		fi
	done

	# nvidia-xconfig
	install -D -m755 nvidia-xconfig $pkgdir/usr/bin/nvidia-xconfig
	install -D -m644 nvidia-xconfig.1.gz $pkgdir/usr/share/man/man1/nvidia-xconfig.1.gz
	# nvidia-settings
	install -D -m755 nvidia-settings $pkgdir/usr/bin/nvidia-settings
	install -D -m644 nvidia-settings.1.gz $pkgdir/usr/share/man/man1/nvidia-settings.1.gz
	install -D -m644 nvidia-settings.desktop $pkgdir/usr/share/applications/nvidia-settings.desktop
	install -D -m644 nvidia-settings.png $pkgdir/usr/share/pixmaps/nvidia-settings.png
	sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i $pkgdir/usr/share/applications/nvidia-settings.desktop
	# nvidia-bug-report
	install -D -m755 nvidia-bug-report.sh $pkgdir/usr/bin/nvidia-bug-report.sh
	# nvidia-smi
	install -D -m755 nvidia-smi $pkgdir/usr/bin/nvidia-smi
	install -D -m644 nvidia-smi.1.gz $pkgdir/usr/share/man/man1/nvidia-smi.1.gz


	install -D -m644 LICENSE $pkgdir/usr/share/licenses/nvidia/LICENSE
	ln -s nvidia $pkgdir/usr/share/licenses/nvidia-utils
	install -D -m644 README.txt $pkgdir/usr/share/doc/nvidia/README
	install -D -m644 NVIDIA_Changelog $pkgdir/usr/share/doc/nvidia/NVIDIA_Changelog
	ln -s nvidia $pkgdir/usr/share/doc/nvidia-utils

	# Install xorg.conf.d file for nvidia autodetection in xorg.conf-less configurations
	install -D -m644 $srcdir/20-nvidia.conf $pkgdir/etc/X11/xorg.conf.d/20-nvidia.conf
}